﻿'''
题目描述
给定一个正整数数组，设为nums，最大为100个成员，求从第一个成员开始，正好走到数组最后一个成员，所使用的最少步骤数。
要求：
第一步必须从第一元素开始，且1<=第一步的步长<len/2;（len为数组的长度，需要自行解析）。
从第二步开始，只能以所在成员的数字走相应的步数，不能多也不能少, 如果目标不可达返回**-1**，只输出最少的步骤数量。
只能向数组的尾部走，不能往回走。
输入描述
由正整数组成的数组，以空格分隔，数组长度小于100，请自行解析数据数量。
输出描述
正整数，表示最少的步数，如果不存在输出-1
示例1
输入
7 5 9 4 2 6 8 3 5 4 3 9
输出
2
说明
第一步： 第一个可选步长选择2，从第一个成员7开始走2步，到达9；
第二步： 从9开始，经过自身数字9对应的9个成员到最后。
示例2
输入
1 2 3 7 1 5 9 3 2 1
输出
-1
说明： 不存在
'''
#读取输入并存储到数组
nums = list(map(int,input().split()))
#新建结果数组存储步数
result = []
#从第一步开始遍历数组并计算可达步数
for i in range(1,len(nums)//2):
    step = 1    #第一步已走出
    index = i   #走到索引i的位置
    while index < (len(nums) -1):   #未到达最后
        index += nums[index]    #继续往后走
        step += 1       #步数加1
    if index == (len(nums) - 1):    #刚好到达最后一个
        result.append(step)
#输出最小步数(如果存在)
if len(result) > 0:
    result.sort()   #list.sort()是原地排序方法，不会返回新列表，默认升序reverse=False，如想保留原列表，可用sorted()
    print(result[0])
else:
    print('-1')

